//对于axios进行二次封装
import axios from "axios";
import nProgress from "nprogress";          //引入nprogress进度条
import "nprogress/nprogress.css";          //引入nprogress样式
import store from "@/store"


//start:进度条开始      done:进度条结束

//利用axios的create方法去创建一个axios实例  
//其中request就是axios，只不过我们稍微配置一下
const requests = axios.create({
    //配置对象
    baseURL: "/api",                     //基于那个路径，发请求的时候，会自动添加api
    template: 5000,                     //代表的是请求的时间，当5s没反应，就会结束
})

// 这个是请求拦截器:在发请求之前就可以监测到,可以在发请求前进行一些操作
requests.interceptors.request.use((config) => {
    if (store.state.Detail.uuid_tiech) {
        config.headers.userTempId = store.state.Detail.uuid_tiech;
    }
    if (store.state.LoginandRegistration.token) {
        config.headers.token = store.state.LoginandRegistration.token;
    }
    nProgress.start()       //进度条开始
    //config:配置对象，其中对象中的headers请求头很重要
    return config;
})

//响应拦截器:在请求响应之后做一些操作
requests.interceptors.response.use(
    (res) => {             //成功回调
        nProgress.done()        //进度条结束

        return res.data
    },
    (error) => {               //失败回调 
        return Promise.reject(new Error("faile"));
    })

export default requests